// UGOperation.h: interface for the UGOperation class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_UGOPERATION_H__9F5514AA_BF9D_4B51_819C_4CE4E2A5856E__INCLUDED_)
#define AFX_UGOPERATION_H__9F5514AA_BF9D_4B51_819C_4CE4E2A5856E__INCLUDED_

#include "gxfMath.h"	// Added by ClassView

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class UGOperation  
{
public:
	void AskFeatureCylinderFace(tag_t featureId,tag_t *faceId);
	void EditPartExp(tag_t partId,char *expName,char *expData);
	void AddPartToAssem(tag_t parentId,char *partPathName,char *instance_name,tag_t &instance);
	void SetPartBlank(tag_t partId,int status);
	int SetMate(tag_t faceId1, int faceType1,tag_t faceId2, int faceType2,int gxfmate);
	void EditFeatureAtt(tag_t featureId, char *title, char *data2);
	int cycle_components(tag_t component,char *indentation, char *partName, double TRANS[16],double CYCS[9]);
	void EditHoleFeatureExpDiameter(tag_t featureId,char jianxi[20],char stanDiam[20]);
	void AskFeatureCYCS(char* partName, double CYCS[9]);
	void AskFeatureTRANS(char* partName, double TRANS[16]);
	void AskHoleFeatureId(char *partName,char *featureName,tag_t *featureId);
	//void AskHoleParameter(tag_t featureId,PARADLG *aParaDlg,FACEATT* &aFaceAtt);
	void AskFeatureName(tag_t featureId,char *featureName);
	void SetHoleMFeatureAtt(tag_t featureId, char *title,char *data);
	void OpenMPart(char *assMPathName);
	void AskPartId(char *partName,tag_t *partId);
	void AskFaceData(tag_t faceId,double *point,double *dir);
	void AskHoleParameter(tag_t featureId,double *diam,double *depth,double *angle);
	void AskAssMPart(char *assMPathName);
	void circleFeatureRelatives(tag_t feature, int index);
	int getFeatureParam(tag_t feature,double workPoint[],
		double workDir[], tag_t *sameFaceId,tag_t *oppFaceId,
		int *oppFaceIndex,double *oppDis);
	void CyclePartByPointAndDir(tag_t partId,double workPoint[3],
		double workDir[3],tag_t *sameFaceId,tag_t *oppFaceId,
		int *oppFaceIndex,double *oppDis);
	void AskWorkPartPoint(double assPoint[3], double TRANS[16],double workPoint[3]);
	void AskWorkPartDir(double assDir[3],double CSYS[9],double workDir[3]);
	void SetFeatureMFaceName(tag_t featureId,char *faceName);
	void AskFeaturePoint(tag_t featureId,double featurePoint[3]);
	void SetWorkPart(char *partName);
	void AskAssPoint(double workP[3],double TRANS[16],double assP[3]);
	void AskSelectedPartData(tag_t selectedFace,tag_t *partId,char *pathName,char *partName,double CSYS[9],double TRANS[16]);
	UGOperation();
	virtual ~UGOperation();

private:
	gxfMath aGxfMath;
};

#endif // !defined(AFX_UGOPERATION_H__9F5514AA_BF9D_4B51_819C_4CE4E2A5856E__INCLUDED_)
